<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>phpless 首页</title>
</head>
<body>
    <!-- <h2 style="color:red;text-align:center;">Hello world! My name is phpless.</h2> -->
    <h2 style="color:red;text-align:center;">Hello world! My name is <?php echo $framework_name;?>.</h2>
    <h3>设计模式学习</h3>
    <p>简介：1. 什么是设计模式？答：在代码不可更改或修改额外操作繁琐下，代码开发的招式，代码开发的最佳实践。</p>
    <p>2. 设计模式的关键之处 1：我们在开发过程中，自动就运用了简单设计模式，只是随着开发的深入，才会运用复杂的设计模式或者可以总结前人已经总结好的设计模式。</p>
    <p>3. 设计模式的关键之处 2：非编译非静态语言不加密开发，没有真正意义上的设计模式。</p>
    <p>4. 设计模式的关键之处 3：一个功能可能可以通过多种设计模式解决，具体使用哪一种，还需要具体分析。</p>
    <h4>1、工厂方法模式</h4>
    <div>
        <p>1. 没有使用工厂方法模式，对数组进行处理，转化为 JSON 字符串与获取数组的所有键 <a href="./index.php/ArraysFactory/noUseFactory" target="_blank">点击</a></p>
        <p>2. 使用工厂方法模式，对数组进行处理，转化为 JSON 字符串与获取数组的所有键 <a href="./index.php/ArraysFactory/useFactory" target="_blank">点击</a></p>
    </div>
    <h4>2、抽象工厂模式</h4>
    <div>
        <p>-. 此框架运用到了抽象工厂模式，代码路径为：/phpless/core/Factory.class.php</p>
    </div>
    <h4>3、单例模式</h4>
    <div>
        <p>-. 此框架运用到了单例模式，代码路径为：/phpless/core/Factory.class.php</a></p>
    </div>
    <h4>4、建造者模式</h4>
    <div>
        <p>1. 构建车辆 没有使用 建造者 设计模式 <a href="./index.php/VehicleBuilder/noUseBuilder" target="_blank">点击</a></p>
        <p>2. 构建车辆 没有使用 建造者设计模式 但使用了一个指挥类 <a href="./index.php/VehicleBuilder/useDirectorNoUseBuilder" target="_blank">点击</a></p>
        <p>3. 构建车辆 使用 建造者 设计模式 <a href="./index.php/VehicleBuilder/useBuilder" target="_blank">点击</a></p>
    </div>
    <h4>5、原型模式</h4>
    <div>
        <p>1. 构建人类 没有使用 原型模式 <a href="./index.php/PeoplePrototype/noUsePrototype" target="_blank">点击</a></p>
        <p>2. 构建人类 使用 原型模式 <a href="./index.php/PeoplePrototype/usePrototype" target="_blank">点击</a></p>
    </div>
    <h4>6、适配器模式</h4>
    <div>
        <p>1. 没有使用适配器模式，实例化学生类，设置信息后，只获取学生姓名 <a href="./index.php/StudentAdaptor/noUseAdaptor" target="_blank">点击</a></p>
        <p>2. 使用适配器模式，实例化学生类，设置信息后，只获取学生姓名 <a href="./index.php/StudentAdaptor/useAdaptor" target="_blank">点击</a></p>
    </div>
    <h4>7、装饰器模式</h4>
    <div>
        <p>1. 打印一串字符串，没有使用装饰器模式，改变字符串的颜色或者加边框 <a href="./index.php/EchosDecorator/noUseDecorator" target="_blank">点击</a></p>
        <p>2. 打印一串字符串，使用装饰器模式，改变字符串的颜色或者加边框 <a href="./index.php/EchosDecorator/useDecorator" target="_blank">点击</a></p>
    </div>
    <h4>8、代理模式</h4>
    <div>
        <p>1. 没有使用代理模式，获取远程接口的当前天气信息，比如：阴晴、风级 <a href="./index.php/WeatherProxy/noUseProxy" target="_blank">点击</a></p>
        <p>2. 使用代理模式，获取远程接口当前天气信息，比如：阴晴、风级 <a href="./index.php/WeatherProxy/useProxy" target="_blank">点击</a></p>
    </div>
    <h4>9、外观模式</h4>
    <div>
        <p>1. 没有使用外观模式，获取当前天气情况，比如：阴晴、风级 <a href="./index.php/WeatherFacade/noUseFacade" target="_blank">点击</a></p>
        <p>2. 使用外观模式，获取当前天气情况，比如：阴晴、风级 <a href="./index.php/WeatherFacade/useFacade" target="_blank">点击</a></p>
    </div>
    <h4>10、桥接模式</h4>
    <div>
        <p>1. 没有使用桥接模式，改变当前天气，比如阴晴、风级 <a href="./index.php/WeatherBridge/noUseBridge" target="_blank">点击</a></p>
        <p>2. 使用桥接模式，改变当前天气，比如阴晴、风级 <a href="./index.php/WeatherBridge/useBridge" target="_blank">点击</a></p>
    </div>
    <h4>11、组合模式</h4>
    <div>
        <p>1. 没有使用组合模式，调用一个部门与同时调用多个部门 <a href="./index.php/CompanyComposite/noUseComposite" target="_blank">点击</a></p>
        <p>2. 使用组合模式，公司树形架构，调用一个部门与调用部门 <a href="./index.php/CompanyComposite/useComposite" target="_blank">点击</a></p>
    </div>
    <h4>12、注册树模式</h4>
    <div>
        <p>-. 此框架运用到了注册树模式，代码路径为：/phpless/core/Factory.class.php</p>
    </div>
    <h4>13、策略模式</h4>
    <div>
        <p>1. 使用策略模式下，支付宝支付 <a href="./index.php/PayStrategy/index/pay_type/alipay" target="_blank">点击</a></p>
        <p>2. 使用策略模式下，微信支付 <a href="./index.php/PayStrategy/index?pay_type=wxpay" target="_blank">点击</a></p>
    </div>
    <h4>14、模板方法模式</h4>
    <div>
        <p>1. 使用模板方法模式下，支付宝支付、生成唯一订单号，然后获取支付信息 <a href="./index.php/PayTemplate/alipay" target="_blank">点击</a></p>
        <p>2. 使用模板方法模式下，微信支付、生成唯一订单号，然后获取支付信息 <a href="./index.php/PayTemplate/wxpay" target="_blank">点击</a></p>
    </div>
    <h4>15、观察者模式</h4>
    <div>
        <p>1. 没有使用观察者模式，访问页面显示主体内容后，显示问候语或者当前时间 <a href="./index.php/ViewObserver/noUseObserver" target="_blank">点击</a></p>
        <p>2. 使用观察者模式，访问页面显示主体内容后，显示问候语或者当前时间 <a href="./index.php/ViewObserver/UseObserver" target="_blank">点击</a></p>
    </div>
    <h4>16、迭代器模式</h4>
    <div>
        <p>-. 遍历加入队列的所有学生，利用 foreach 遍历数组实现，也可以实现 SPL Iterator 迭代器接口迭代数据 <a href="./index.php/StudentIterator/index" target="_blank">点击</a></p>
    </div>
    <h4>17、责任链模式</h4>
    <div>
        <p>1. 没有使用责任链模式，选定许多家中的一家餐厅吃饭 <a href="./index.php/MealResponsibilityChain/noUseChainOfResponsibility" target="_blank">点击</a></p>
        <p>2. 使用责任链模式，选定许多家中的一家餐厅吃饭 <a href="./index.php/MealResponsibilityChain/useChainOfResponsibility" target="_blank">点击</a></p>
    </div>
    <h4>18、命令模式</h4>
    <div>
        <p>-. 使用命令模式，吃烧烤 <a href="./index.php/BarbecueCommand/index" target="_blank">点击</a></p>
    </div>
    <h4>19、备忘录模式</h4>
    <div>
        <p>1. 使用简单的备忘录模式，游戏存档 <a href="./index.php/GameMemento/useSimpleMemento" target="_blank">点击</a></p>
        <p>2. 使用较为复杂的备忘录模式，游戏存档 <a href="./index.php/GameMemento/useMemento" target="_blank">点击</a></p>
    </div>
    <h4>20、状态模式</h4>
    <div>
        <p>1. 没有使用状态模式，判断早中晚的餐饮情况 <a href="./index.php/RepastState/noUseState" target="_blank">点击</a></p>
        <p>2. 使用状态模式，判断早中晚的就餐情况 <a href="./index.php/RepastState/useState" target="_blank">点击</a></p>
    </div>
    <h4>21、访问者模式</h4>
    <div>
        <p>1. 没有使用访问者模式，根据不同的访问者引入不同的 style、JavaScript-学生访问<a href="./index.php/ScriptVisitor/noUseVisitor?role=student" target="_blank">点击</a></p>
        <p>2. 没有使用访问者模式，根据不同的访问者引入不同的 style、JavaScript-教师访问<a href="./index.php/ScriptVisitor/noUseVisitor?role=teacher" target="_blank">点击</a></p>
        <p>3. 使用访问者模式，学生访问时，引入对应的 style 与 JavaScript <a href="./index.php/ScriptVisitor/useVisitor?role=student" target="_blank">点击</a></p>
        <p>4. 使用访问者模式，教师访问时，引入对应的 style 与 JavaScript <a href="./index.php/ScriptVisitor/UseVisitor?role=teacher" target="_blank">点击</a></p>
    </div>
    <h4>22、中介者模式</h4>
    <div>
        <p>-. 中介者模式概念相对较为简单，主要解决对象与对象之间的大量关联关系，从而达到解耦的目的，将网状结构分离为星型结构 <a href="./index.php/ControllerMediator/index" target="_blank">点击</a></p>
    </div>
    <h4>23、解释器模式</h4>
    <div>
        <p>1. 没有使用解释器模式，对字符串进行多次处理 <a href="./index.php/StringInterpreter/noUseInterpreter" target="_blank">点击</a></p>
        <p>2. 使用解释器模式，对字符串进行多次处理 <a href="./index.php/StringInterpreter/useInterpreter" target="_blank">点击</a></p>
    </div>
</body>
</html>
